package org.jeecg.modules.demo.yuedupeihe.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.demo.yuedupeihe.entity.PeiheDto;
import org.jeecg.modules.demo.yuedupeihe.entity.Yuedupeihebumenbiao;
import org.jeecg.modules.demo.yuedupeihe.mapper.YuedupeihebumenbiaoMapper;
import org.jeecg.modules.demo.yuedupeihe.service.IYuedupeihebumenbiaoService;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.entity.SysUserRole;
import org.jeecg.modules.system.service.ISysUserRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import java.util.List;

/**
 * @Description: 配合部门表
 * @Author: jeecg-boot
 * @Date:   2025-11-08
 * @Version: V1.0
 */
@Service
public class YuedupeihebumenbiaoServiceImpl extends ServiceImpl<YuedupeihebumenbiaoMapper, Yuedupeihebumenbiao> implements IYuedupeihebumenbiaoService {

    @Autowired
    private YuedupeihebumenbiaoMapper peihebumenbiaoMapper;
    @Autowired
    private ISysUserRoleService sysUserRoleService;

    //获取部门id
    public String departId(){
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String departId = sysUser.getDepartIds();
        return departId;
    }
    @Override
    public List<SysUser> getUserList(){
        String departId = departId();
        return peihebumenbiaoMapper.getPeihezhuguan(departId);
    }

    //选择配合主管
    @Override
    public void choosePeihezhuguan(PeiheDto peiheDto){
        if(peiheDto.getPeihezhuguan() != null){
            Yuedupeihebumenbiao peihebumenbiao = this.getById(peiheDto.getId());
            peihebumenbiao.setPeihezhuguan(peiheDto.getPeihezhuguan());
            this.updateById(peihebumenbiao);
        }else{
            throw new RuntimeException("暂无数据!" );
        }
    }

    //接收驳回
    @Override
    public void receive(PeiheDto peiheDto){
        QueryWrapper<Yuedupeihebumenbiao> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id",peiheDto.getShenheid());
        Yuedupeihebumenbiao peihebumenbiao = this.getOne(queryWrapper);
        if(peiheDto.getCaozuo().equals("已接收")){
            //根据不同角色接收也不同
            LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
            QueryWrapper<SysUserRole> queryWrapper2 = new QueryWrapper<>();
            queryWrapper2.eq("user_id",sysUser.getId());
            SysUserRole sysUserRole = sysUserRoleService.getOne(queryWrapper2);
            String roleId = sysUserRole.getRoleId();
            //角色为部长
            if(roleId.equals("1970852625298092033")){
                peihebumenbiao.setZhuangtai("主管待接收");
                this.updateById(peihebumenbiao);
            }
            //角色为主管
            else if (roleId.equals("1976183850854342657")) {
                peihebumenbiao.setZhuangtai("已接收");
                this.updateById(peihebumenbiao);
            }
        }else if(peiheDto.getCaozuo().equals("已驳回")){
            peihebumenbiao.setZhuangtai("已驳回");
            this.updateById(peihebumenbiao);
        }else{
            throw new RuntimeException("没有权限!" );//在service中通过抛异常处理错误
        }
    }
}
